package net.xdclass.controller.common;

import jakarta.annotation.Resource;
import net.xdclass.req.common.ProjectDelReq;
import net.xdclass.req.common.ProjectSaveReq;
import net.xdclass.req.common.ProjectUpdateReq;
import net.xdclass.service.common.ProjectService;
import net.xdclass.util.JsonData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * 项目控制器，负责处理与项目相关的API请求。
 */
@RestController
@RequestMapping("/api/v1/project")
public class ProjectController {

    /**
     * 注入项目服务层，用于处理业务逻辑。
     */
    @Resource
    private ProjectService projectService;

    /**
     * 获取项目列表。
     *
     * @return 包含项目列表的JsonData对象。
     */
    @GetMapping("/list")
    public JsonData list() {
        return JsonData.buildSuccess(projectService.list());
    }

    /**
     * 保存项目信息。
     *
     * @param req 包含待保存项目信息的请求体。
     * @return 表示操作结果的JsonData对象。
     */
    @PostMapping("/save")
    public JsonData save(@RequestBody ProjectSaveReq req) {
        return JsonData.buildSuccess(projectService.save(req));
    }

    /**
     * 更新项目信息。
     *
     * @param req 包含待更新项目信息的请求体。
     * @return 表示操作结果的JsonData对象。
     */
    @PostMapping("/update")
    public JsonData update(@RequestBody ProjectUpdateReq req) {
        return JsonData.buildSuccess(projectService.update(req));
    }

    /**
     * 删除项目。
     *
     * @param req 包含待删除项目ID的请求体。
     * @return 表示操作结果的JsonData对象。
     */
    @PostMapping("/del")
    public JsonData delete(@RequestBody ProjectDelReq req) {
        return JsonData.buildSuccess(projectService.delete(req.getId()));
    }
}
